﻿using System;
namespace Microsoft.Data.Edm.Validation
{
    /// <summary>
    /// EdmLib validation error codes
    /// </summary>
    public enum EdmErrorCode
    {
        /// <summary>
        /// Invalid error code
        /// </summary>
        InvalidErrorCodeValue,
        /// <summary>
        /// References to EDM stream type are not supported before version 3.0.
        /// </summary>
        StreamTypeReferencesNotSupportedBeforeV3,
        /// <summary>
        /// References to EDM spatial types are not supported before version 3.0.
        /// </summary>
        SpatialTypeReferencesNotSupportedBeforeV3 = 3,
        /// <summary>
        /// An exception was thrown by the underlying xml reader.
        /// </summary>
        XmlError = 5,
        /// <summary>
        /// Encountered an XML node that was never used
        /// </summary>
        UnexpectedXmlNodeType = 8,
        /// <summary>
        /// Encountered an XML attribute that was never used
        /// </summary>
        UnexpectedXmlAttribute,
        /// <summary>
        /// Encountered an XML element that was never used
        /// </summary>
        UnexpectedXmlElement,
        /// <summary>
        /// Text was found in a location it was not allowed in
        /// </summary>
        TextNotAllowed,
        /// <summary>
        /// An empty file was provided to the parser
        /// </summary>
        EmptyFile,
        /// <summary>
        /// An XML element was missing a required attribute
        /// </summary>
        MissingAttribute = 15,
        /// <summary>
        /// Invalid Name
        /// </summary>
        InvalidName = 17,
        /// <summary>
        /// An XML attribute or element representing EDM type is missing.
        /// </summary>
        MissingType,
        /// <summary>
        /// Element name is already defined in this context.
        /// </summary>
        AlreadyDefined,
        /// <summary>
        /// The specified version number is not valid.
        /// </summary>
        InvalidVersionNumber = 25,
        /// <summary>
        /// Malformed boolean value.
        /// </summary>
        InvalidBoolean = 27,
        /// <summary>
        /// The property contains an error.
        /// </summary>
        BadProperty = 42,
        /// <summary>
        /// The type of this property is invalid for the given context.
        /// </summary>
        InvalidPropertyType = 44,
        /// <summary> 
        /// Precision out of range 
        /// </summary>
        PrecisionOutOfRange = 51,
        /// <summary> 
        /// Scale out of range 
        /// </summary>
        ScaleOutOfRange,
        /// <summary>
        /// Name is too long.
        /// </summary>
        NameTooLong = 60,
        /// <summary>
        /// The provided association is invalid
        /// </summary>
        InvalidAssociation = 62,
        /// <summary>
        /// Navigation property contains errors.
        /// </summary>
        BadNavigationProperty = 74,
        /// <summary>
        /// Entity key is invalid.
        /// </summary>
        InvalidKey,
        /// <summary>
        /// The value of the property must not be null.
        /// </summary>
        InterfaceCriticalPropertyValueMustNotBeNull,
        /// <summary>
        /// An object with an interface kind property does not implement the interface corresponding to the value of that property.
        /// For example this error will be reported for an object that implements <see cref="T:Microsoft.Data.Edm.IEdmType" /> interface with kind property reporting <see cref="T:Microsoft.Data.Edm.EdmTypeKind" />.Entity, 
        /// but does not implement <see cref="T:Microsoft.Data.Edm.IEdmEntityType" /> interface.
        /// </summary>
        InterfaceCriticalKindValueMismatch,
        /// <summary>
        /// The value of an interface kind property is not semantically valid. A semantically valid model must not contain elements of kind 'None'.
        /// </summary>
        InterfaceCriticalKindValueUnexpected,
        /// <summary>
        /// An enumeration property must not contain null elements.
        /// </summary>
        InterfaceCriticalEnumerableMustNotHaveNullElements,
        /// <summary>
        /// The value of the enum type property is out of range.
        /// </summary>
        InterfaceCriticalEnumPropertyValueOutOfRange,
        /// <summary>
        /// If property P1 is a navigation property and P2 is its parnter, then partner property of P2 must be P1.
        /// </summary>
        InterfaceCriticalNavigationPartnerInvalid,
        /// <summary>
        /// A chain of base types is cyclic.
        /// </summary>
        InterfaceCriticalCycleInTypeHierarchy,
        /// <summary>
        /// Multiplicity value was malformed
        /// </summary>
        InvalidMultiplicity = 92,
        /// <summary>
        /// The value for the Action attribute is invalid or not allowed in the current context
        /// </summary>
        InvalidAction = 96,
        /// <summary>
        /// An error occured processing the OnDelete element
        /// </summary>
        InvalidOnDelete,
        /// <summary>
        /// No complex type with that name exists.
        /// </summary>
        BadUnresolvedComplexType,
        /// <summary>
        /// The extent name used in the EntittyContainerType End does not match the name of any of the EntityContainerProperties in the containing EntityContainer
        /// </summary>
        InvalidEndEntitySet = 100,
        /// <summary>
        /// Function import specifies an entity set expression which is not supported in this context. Function import entity set expression can be either an entity set reference or a path starting with a function import parameter and traversing navigation properties.
        /// </summary>
        FunctionImportEntitySetExpressionIsInvalid = 103,
        /// <summary>
        /// The target entity set must be able to hold an entity that is valid for the navigation property of a mapping.
        /// </summary>
        EntitySetNavigationPropertyMappingMustPointToValidTargetForProperty = 109,
        /// <summary>
        /// Invalid role value in the relationship constraint
        /// </summary>
        InvalidRoleInRelationshipConstraint,
        /// <summary>
        /// Invalid Property in relationship constraint
        /// </summary>
        InvalidPropertyInRelationshipConstraint,
        /// <summary> 
        /// Type mismatch between ToProperty and FromProperty in the relationship constraint
        /// </summary>
        TypeMismatchRelationshipConstraint,
        /// <summary> 
        /// Invalid multiplicty of the principal end of a navigation.
        /// </summary>
        InvalidMultiplicityOfPrincipalEnd,
        /// <summary> 
        /// The number of properties in the FromProperty and ToProperty in the relationship constraint must be identical
        /// </summary>
        MismatchNumberOfPropertiesInRelationshipConstraint,
        /// <summary> 
        /// Invalid multiplicty of the dependent end of a navigation.
        /// </summary>
        InvalidMultiplicityOfDependentEnd = 116,
        /// <summary>
        /// Open types are supported only in version 1.2 and after version 2.0. Only entity types can be open.
        /// </summary>
        OpenTypeNotSupported,
        /// <summary>
        /// Vocabulary annotations are not supported before EDM 3.0
        /// </summary>
        VocabularyAnnotationsNotSupportedBeforeV3,
        /// <summary> 
        /// Same role referred in the ToRole and FromRole of a referential constraint 
        /// </summary>
        SameRoleReferredInReferentialConstraint,
        /// <summary> 
        /// Properties that are part of entity key must be of scalar type
        /// </summary>
        EntityKeyMustBeScalar = 128,
        /// <summary> 
        /// Binary type properties which are part of entity key are currently supported before V2.0 
        /// </summary>
        EntityKeyMustNotBeBinary,
        /// <summary>
        /// End with * multiplicity cannot have operations specified
        /// </summary>
        EndWithManyMultiplicityCannotHaveOperationsSpecified = 132,
        /// <summary>
        /// EntitySet type has no keys
        /// </summary>
        EntitySetTypeHasNoKeys,
        /// <summary>
        /// ConcurrencyMode value was malformed
        /// </summary>
        InvalidConcurrencyMode = 144,
        /// <summary>
        /// Conurency can't change for any sub types of an EntitySet type.
        /// </summary>
        ConcurrencyRedefinedOnSubtypeOfEntitySetType,
        /// <summary>
        /// In version 1.0 function import can have no return type or return a collection of scalars or a collection of entities.
        /// In all other versions function import can have no return type or return a scalar, a complex type, an entity type or a collection of those.
        /// </summary>
        FunctionImportUnsupportedReturnType,
        /// <summary>
        /// Composable function import cannot be side-effecting.
        /// </summary>
        ComposableFunctionImportCannotBeSideEffecting,
        /// <summary>
        /// Function import specifies entity type return but no entity set.
        /// </summary>
        FunctionImportReturnsEntitiesButDoesNotSpecifyEntitySet,
        /// <summary>
        /// Function import specifies entity type that does not derive from element type of entity set.
        /// </summary>
        FunctionImportEntityTypeDoesNotMatchEntitySet,
        /// <summary>
        /// Function import specifies a binding to an entity set but does not return entities.
        /// </summary>
        FunctionImportSpecifiesEntitySetButDoesNotReturnEntityType,
        /// <summary>
        /// A composable function import must have return type.
        /// </summary>
        ComposableFunctionImportMustHaveReturnType = 152,
        /// <summary>
        /// Same Entity Set Taking part in the same role of the relationship set in two different relationship sets
        /// </summary>
        SimilarRelationshipEnd,
        /// <summary>
        /// Entity key refers to the same property twice
        /// </summary>
        DuplicatePropertySpecifiedInEntityKey,
        /// <summary> 
        /// Nullable complex Type not supported in version 1.0 and 2.0.
        /// </summary>
        NullableComplexTypeProperty = 157,
        /// <summary>
        /// No Key defined on Entity Type 
        /// </summary>
        KeyMissingOnEntityType = 159,
        /// <summary>
        /// Need not specify system namespace in using 
        /// </summary>
        SystemNamespaceEncountered = 161,
        /// <summary> 
        /// Invalid qualification specified for type 
        /// </summary>
        InvalidNamespaceName = 163,
        /// <summary>
        /// The value for an enumeration type member is ouf of range.
        /// </summary>
        EnumMemberValueOutOfRange = 206,
        /// <summary>
        /// The entity container name has already been assigned to a different entity container.
        /// </summary>
        DuplicateEntityContainerMemberName = 218,
        /// <summary>
        /// Complex types were not allowed to be abstract here.
        /// </summary>
        InvalidAbstractComplexType = 220,
        /// <summary>
        /// Complex types cannot have base types in this version.
        /// </summary>
        InvalidPolymorphicComplexType,
        /// <summary>
        /// A navigation property without direct containment cannot contain its declaring entity indirectly.
        /// </summary>
        NavigationPropertyEntityMustNotIndirectlyContainItself,
        /// <summary>
        /// If a navigation property mapping is of a recursive navigation property, the mapping must point back to the same entity set.
        /// </summary>
        EntitySetRecursiveNavigationPropertyMappingsMustPointBackToSourceEntitySet,
        /// <summary>
        /// Name collision makes this name ambiguous.
        /// </summary>
        BadAmbiguousElementBinding,
        /// <summary>
        /// Could not find a type with this name.
        /// </summary>
        BadUnresolvedType,
        /// <summary>
        /// Could not find a primitive type with this name.
        /// </summary>
        BadUnresolvedPrimitiveType,
        /// <summary>
        /// This complex type is part of a cycle.
        /// </summary>
        BadCyclicComplex,
        /// <summary>
        /// This Entity Container is bad because some part of its extends hierarchy is part of a cycle.
        /// </summary>
        BadCyclicEntityContainer,
        /// <summary>
        /// This entity type is part of a cycle.
        /// </summary>
        BadCyclicEntity,
        /// <summary>
        /// Could not convert type reference to the requested type.
        /// </summary>
        TypeSemanticsCouldNotConvertTypeReference,
        /// <summary>
        /// This entity set became invalid because the entity that it was of the type of was removed from the model.
        /// </summary>
        ConstructibleEntitySetTypeInvalidFromEntityTypeRemoval,
        /// <summary>
        /// Could not find an EntityContainer with that name.
        /// </summary>
        BadUnresolvedEntityContainer,
        /// <summary>
        /// Could not find an EntitySet with that name.
        /// </summary>
        BadUnresolvedEntitySet,
        /// <summary>
        /// Could not find a property with that name
        /// </summary>
        BadUnresolvedProperty,
        /// <summary>
        /// Could not find an association end with that name
        /// </summary>
        BadNonComputableAssociationEnd,
        /// <summary>
        /// Type of the navigation property was invalid because the association of the navigation property was invalid.
        /// </summary>
        NavigationPropertyTypeInvalidBecauseOfBadAssociation,
        /// <summary>
        /// The base type of an entity must also be an entity.
        /// </summary>
        EntityMustHaveEntityBaseType,
        /// <summary>
        /// The base type of a complex type must also be complex.
        /// </summary>
        ComplexTypeMustHaveComplexBaseType,
        /// <summary>
        /// Could not find a function with this name.
        /// </summary>
        BadUnresolvedFunction,
        /// <summary>
        /// Rows cannot have base types.
        /// </summary>
        RowTypeMustNotHaveBaseType,
        /// <summary>
        /// The role of an association set end must be an association end belonging to the association type that defines the associaiton set.
        /// </summary>
        AssociationSetEndRoleMustBelongToSetElementType,
        /// <summary>
        /// Every property in an entity key must be a property of the entity.
        /// </summary>
        KeyPropertyMustBelongToEntity,
        /// <summary>
        /// The principal end of a referential constraint must be one of the ends of the association that defined the referential constraint.
        /// </summary>
        ReferentialConstraintPrincipalEndMustBelongToAssociation,
        /// <summary>
        /// Dependent properties of a referential constraint must belong to the dependent entity set.
        /// </summary>
        DependentPropertiesMustBelongToDependentEntity,
        /// <summary>
        /// If a structured type declares a property, that properties declaring type must be the declaring structured type.
        /// </summary>
        DeclaringTypeMustBeCorrect,
        /// <summary>
        /// Functions are not supported before version 2.0.
        /// </summary>
        FunctionsNotSupportedBeforeV2 = 256,
        /// <summary>
        /// Value terms are not supported before EDM 3.0
        /// </summary>
        ValueTermsNotSupportedBeforeV3,
        /// <summary>
        /// Navigation property has a type that is not an entity or collection of entities.
        /// </summary>
        InvalidNavigationPropertyType,
        /// <summary>
        /// Underlying type of the enumeration type is bad because the enumeration type is bad.
        /// </summary>
        UnderlyingTypeIsBadBecauseEnumTypeIsBad = 261,
        /// <summary>
        /// The type of the entity set on this association end is inconsistent with the association end.
        /// </summary>
        InvalidAssociationSetEndSetWrongType,
        /// <summary>
        /// Only function parameters with mode of In are allowed in function imports.
        /// </summary>
        OnlyInputParametersAllowedInFunctions,
        /// <summary>
        /// Complex types must contain at least one property.
        /// </summary>
        ComplexTypeMustHaveProperties,
        /// <summary>
        /// Unsupported function import parameter type.
        /// </summary>
        FunctionImportParameterIncorrectType,
        /// <summary>
        /// A row type must contain at least one property.
        /// </summary>
        RowTypeMustHaveProperties,
        /// <summary>
        /// A referential constraint cannot have multiple dependent properties with the same name.
        /// </summary>
        DuplicateDependentProperty,
        /// <summary>
        /// Bindable function import must have at least one parameter.
        /// </summary>
        BindableFunctionImportMustHaveParameters,
        /// <summary>
        /// Function imports with side-effecting setting are not supported before version 3.0.
        /// </summary>
        FunctionImportSideEffectingNotSupportedBeforeV3,
        /// <summary>
        /// Function imports with composable setting are not supported before version 3.0.
        /// </summary>
        FunctionImportComposableNotSupportedBeforeV3,
        /// <summary>
        /// Function imports with bindable setting are not supported before version 3.0.
        /// </summary>
        FunctionImportBindableNotSupportedBeforeV3,
        /// <summary>
        /// Max length is out of range.
        /// </summary>
        MaxLengthOutOfRange,
        /// <summary>
        /// Binding context for Path expression does not supply an entity type
        /// </summary>
        PathExpressionHasNoEntityContext = 274,
        /// <summary>
        /// Invalid value for SRID
        /// </summary>
        InvalidSrid,
        /// <summary>
        /// Invalid value for max length
        /// </summary>
        InvalidMaxLength,
        /// <summary>
        /// Invalid value for long
        /// </summary>
        InvalidLong,
        /// <summary>
        /// Invalid value for integer
        /// </summary>
        InvalidInteger,
        /// <summary>
        /// Invalid association set
        /// </summary>
        InvalidAssociationSet,
        /// <summary>
        /// Invalid parameter mode
        /// </summary>
        InvalidParameterMode,
        /// <summary>
        /// No entity type with that name exists.
        /// </summary>
        BadUnresolvedEntityType,
        /// <summary>
        /// Value is invalid
        /// </summary>
        InvalidValue,
        /// <summary>
        /// Binary value is invalid.
        /// </summary>
        InvalidBinary,
        /// <summary>
        /// Floating point value is invalid.
        /// </summary>
        InvalidFloatingPoint,
        /// <summary>
        /// DateTime value is invalid.
        /// </summary>
        InvalidDateTime,
        /// <summary>
        /// DateTimeOffset value is invalid.
        /// </summary>
        InvalidDateTimeOffset,
        /// <summary>
        /// Decimal value is invalid.
        /// </summary>
        InvalidDecimal,
        /// <summary>
        /// Guid value is invalid.
        /// </summary>
        InvalidGuid,
        /// <summary>
        /// The type kind None is not semantically valid. A semantically valid model must not contain elements of type kind None.
        /// </summary>
        InvalidTypeKindNone,
        /// <summary>
        /// The if expression is invalid because it does not have 3 elements.
        /// </summary>
        InvalidIfExpressionIncorrectNumberOfOperands,
        /// <summary>
        /// Enums were present in a model with a version below 3.0
        /// </summary>
        EnumsNotSupportedBeforeV3,
        /// <summary>
        /// The type of an enum member value must match the underlying of the parent enum.
        /// </summary>
        EnumMemberTypeMustMatchEnumUnderlyingType,
        /// <summary>
        /// The IsType expression is invalid because it does not have 1 element.
        /// </summary>
        InvalidIsTypeExpressionIncorrectNumberOfOperands,
        /// <summary>
        /// The type name is not fully qualified and not a primitive.
        /// </summary>
        InvalidTypeName,
        /// <summary>
        /// The term name is not fully qualified.
        /// </summary>
        InvalidQualifiedName,
        /// <summary>
        /// No model was parsed because no XmlReaders were provided.
        /// </summary>
        NoReadersProvided,
        /// <summary>
        /// Model could not be parsed because one of the XmlReaders was null.
        /// </summary>
        NullXmlReader,
        /// <summary>
        /// IsUnbounded cannot be true if MaxLength is non-null.
        /// </summary>
        IsUnboundedCannotBeTrueWhileMaxLengthIsNotNull,
        /// <summary>
        /// ImmediateValueAnnotation is invalid as an element annotation.
        /// </summary>
        InvalidElementAnnotation,
        /// <summary>
        /// The LabeledElement expression is invalid because it does not have 1 element.
        /// </summary>
        InvalidLabeledElementExpressionIncorrectNumberOfOperands,
        /// <summary>
        /// Could not find a LabeledElement with that name
        /// </summary>
        BadUnresolvedLabeledElement,
        /// <summary>
        /// Could not find a enum member with that name
        /// </summary>
        BadUnresolvedEnumMember,
        /// <summary>
        /// The AssertType expression is invalid because it does not have 1 element.
        /// </summary>
        InvalidAssertTypeExpressionIncorrectNumberOfOperands,
        /// <summary>
        /// Could not find a Parameter with that name
        /// </summary>
        BadUnresolvedParameter,
        /// <summary>
        /// A navigation property with <see cref="P:Microsoft.Data.Edm.IEdmNavigationProperty.ContainsTarget" /> = true must point to an optional target.
        /// </summary>
        NavigationPropertyWithRecursiveContainmentTargetMustBeOptional,
        /// <summary>
        /// If a navigation property has <see cref="P:Microsoft.Data.Edm.IEdmNavigationProperty.ContainsTarget" /> = true and the target entity type is the same as 
        /// the declaring type of the property, then the multiplicity of the source of navigation is Zero-Or-One.
        /// </summary>
        NavigationPropertyWithRecursiveContainmentSourceMustBeFromZeroOrOne,
        /// <summary>
        /// If a navigation property has <see cref="P:Microsoft.Data.Edm.IEdmNavigationProperty.ContainsTarget" /> = true and the target entity type is defferent than
        /// the declaring type of the property, then the multiplicity of the source of navigation is One.
        /// </summary>
        NavigationPropertyWithNonRecursiveContainmentSourceMustBeFromOne,
        /// <summary>
        /// Navigation properties with <see cref="P:Microsoft.Data.Edm.IEdmNavigationProperty.ContainsTarget" /> setting are not supported before version 3.0.
        /// </summary>
        NavigationPropertyContainsTargetNotSupportedBeforeV3,
        /// <summary>
        /// The annotation target path cannot possibly refer to an annotable element.
        /// </summary>
        ImpossibleAnnotationsTarget,
        /// <summary>
        /// A nullable type is not valid if a non-nullable type is required.
        /// </summary>
        CannotAssertNullableTypeAsNonNullableType,
        /// <summary>
        /// The expression is a primitive constant, and cannot be valid for an non-primitive type.
        /// </summary>
        CannotAssertPrimitiveExpressionAsNonPrimitiveType,
        /// <summary>
        /// The primitive type is not valid for the requested type.
        /// </summary>
        ExpressionPrimitiveKindNotValidForAssertedType,
        /// <summary>
        /// Null is not valid in a non nullable expression.
        /// </summary>
        NullCannotBeAssertedToBeANonNullableType,
        /// <summary>
        /// The expression is not valid for the asserted type.
        /// </summary>
        ExpressionNotValidForTheAssertedType,
        /// <summary>
        /// A collection expression is not valid for a non-collection type.
        /// </summary>
        CollectionExpressionNotValidForNonCollectionType,
        /// <summary>
        /// A record expression is not valid for a non-structured type.
        /// </summary>
        RecordExpressionNotValidForNonStructuredType,
        /// <summary>
        /// The record expression does not have all of the properties required for the specified type.
        /// </summary>
        RecordExpressionMissingRequiredProperty,
        /// <summary>
        /// The record expression's type is not open, but the record expression has extra properties.
        /// </summary>
        RecordExpressionHasExtraProperties,
        /// <summary>
        /// Target has multiple annotations with the same term and same qualifier.
        /// </summary>
        DuplicateAnnotation,
        /// <summary>
        /// Function application has wrong number of arguments for the function being applied.
        /// </summary>
        IncorrectNumberOfArguments,
        /// <summary>
        /// Is it invalid to have multiple using statements with the same alias in a single schema element.
        /// </summary>
        DuplicateAlias,
        /// <summary>
        /// A model cannot be serialized to CSDL if it has references to types without fully qualified names.
        /// </summary>
        ReferencedTypeMustHaveValidName,
        /// <summary>
        /// The model could not be serialized because multiple schemas were produced and only a single output stream was found.
        /// </summary>
        SingleFileExpected,
        /// <summary>
        /// The Edmx version is not valid.
        /// </summary>
        UnknownEdmxVersion,
        /// <summary>
        /// The EdmVersion is not valid.
        /// </summary>
        UnknownEdmVersion,
        /// <summary>
        /// Nothing was written because no schemas were produced.
        /// </summary>
        NoSchemasProduced,
        /// <summary>
        /// Model has multiple entity containers with the same name.
        /// </summary>
        DuplicateEntityContainerName,
        /// <summary>
        /// The container name of a container element must be the full name of the container entity container.
        /// </summary>
        ContainerElementContainerNameIncorrect,
        /// <summary>
        /// A primitive constant expression is not valid for a non-primitive type.
        /// </summary>
        PrimitiveConstantExpressionNotValidForNonPrimitiveType,
        /// <summary>
        /// The value of the integer constant is out of range for the asserted type.
        /// </summary>
        IntegerConstantValueOutOfRange,
        /// <summary>
        /// The length of the string constant is too large for the asserted type.
        /// </summary>
        StringConstantLengthOutOfRange,
        /// <summary>
        /// The length of the binary constant is too large for the asserted type.
        /// </summary>
        BinaryConstantLengthOutOfRange,
        /// <summary>
        /// None is not a valid mode for a function import parameter.
        /// </summary>
        InvalidFunctionImportParameterMode,
        /// <summary>
        /// A type without other errors must not have kind of none.
        /// </summary>
        TypeMustNotHaveKindOfNone,
        /// <summary>
        /// A primitive type without other errors must not have kind of none.
        /// </summary>
        PrimitiveTypeMustNotHaveKindOfNone,
        /// <summary>
        /// A property without other errors must not have kind of none.
        /// </summary>
        PropertyMustNotHaveKindOfNone,
        /// <summary>
        /// A term without other errors must not have kind of none.
        /// </summary>
        TermMustNotHaveKindOfNone,
        /// <summary>
        /// A schema element without other errors must not have kind of none.
        /// </summary>
        SchemaElementMustNotHaveKindOfNone,
        /// <summary>
        /// An entity container element without other errors must not have kind of none.
        /// </summary>
        EntityContainerElementMustNotHaveKindOfNone,
        /// <summary>
        /// A binary value must have content.
        /// </summary>
        BinaryValueCannotHaveEmptyValue,
        /// <summary>
        /// There can only be a single navigation property mapping with containment that targets a particular entity set.
        /// </summary>
        EntitySetCanOnlyBeContainedByASingleNavigationProperty,
        /// <summary>
        /// The navigation properties partner does not point back to the correct type.
        /// </summary>
        InconsistentNavigationPropertyPartner,
        /// <summary>
        /// An entity set can only have one navigation property with containment.
        /// </summary>
        EntitySetCanOnlyHaveSingleNavigationPropertyWithContainment,
        /// <summary>
        /// If a navigation property is traversed from an entity set, and then it's partner is traversed from the target of the first mapping, the destination should be the originating entity set.
        /// </summary>
        EntitySetNavigationMappingMustBeBidirectional,
        /// <summary>
        /// There can only be a single mapping from a given EntitySet with a particular navigation property.
        /// </summary>
        DuplicateNavigationPropertyMapping,
        /// <summary>
        /// An entity set must have a mapping for all of the navigation properties in its element type.
        /// </summary>
        AllNavigationPropertiesMustBeMapped,
        /// <summary>
        /// Type annotation does not have a property binding for all required properties.
        /// </summary>
        TypeAnnotationMissingRequiredProperty,
        /// <summary>
        /// Type annotation has a property binding for a non-existant property and its type is not open.
        /// </summary>
        TypeAnnotationHasExtraProperties,
        /// <summary>
        /// Time value is invalid.
        /// </summary>
        InvalidTime,
        /// <summary>
        /// The primitive type is invalid.
        /// </summary>
        InvalidPrimitiveValue,
        /// <summary>
        /// An Enum type must have an underlying type of integer.
        /// </summary>
        EnumMustHaveIntegerUnderlyingType,
        /// <summary>
        /// Could not find a term with this name.
        /// </summary>
        BadUnresolvedTerm,
        /// <summary>
        /// The principal properties of a referential constraint must match the key of the referential constraint.
        /// </summary>
        BadPrincipalPropertiesInReferentialConstraint,
        /// <summary>
        /// A direct value annotation with the same name and namespace already exists.
        /// </summary>
        DuplicateDirectValueAnnotationFullName,
        /// <summary>
        /// AssociationSetEnd cannot infer an entity set because no set exists of the given type.
        /// </summary>
        NoEntitySetsFoundForType,
        /// <summary>
        /// AssociationSetEnd cannot infer an entity set because more than one set exists of the given type.
        /// </summary>
        CannotInferEntitySetWithMultipleSetsPerType,
        /// <summary>
        /// Invalid entity set path.
        /// </summary>
        InvalidEntitySetPath,
        /// <summary>
        /// Invalid enum member path.
        /// </summary>
        InvalidEnumMemberPath,
        /// <summary>
        /// An annotation qualifier must be a simple name.
        /// </summary>
        QualifierMustBeSimpleName,
        /// <summary>
        /// Enum type could not be resolved.
        /// </summary>
        BadUnresolvedEnumType,
        /// <summary>
        /// Could not find a target with this name.
        /// </summary>
        BadUnresolvedTarget,
        /// <summary>
        /// Path cannot be resolved in the given context.
        /// </summary>
        PathIsNotValidForTheGivenContext
    }
}
